package com

import org.codehaus.groovy.grails.plugins.jasper.JasperExportFormat

import org.codehaus.groovy.grails.plugins.jasper.JasperReportDef
import java.text.SimpleDateFormat
import java.util.Map;

import groovy.sql.Sql

class MovimentosService {

	static transactional = true

	def jasperService
	def dataSource
	
	private def criaFluxoCaixa(FluxoCaixa fluxoCaixa) {
		
		println("fluxoCaixaInstance: "+fluxoCaixa)

		Map params= new HashMap()
		
		String nomeRelatorio = "report1"
		String nomeDoc = "FluxoCaixa"
		fluxoCaixa.nomeFluxo = nomeDoc
		
		fluxoCaixa = criaFluxoCaixa(params, nomeRelatorio, nomeDoc, fluxoCaixa)
	}

	private FluxoCaixa criaFluxoCaixa(Map params, String reportFileName, String nomeDoc, FluxoCaixa fluxoCaixa) {

		def dados = [:]
		
		def dataInicial = new SimpleDateFormat("dd/MM/yyyy").format(fluxoCaixa.dataInicial)
		def dataFinal = new SimpleDateFormat("dd/MM/yyyy").format(fluxoCaixa.dataFinal)

		//dados.put("contasReceber", fluxoCaixa.contasReceber)
		//dados.put("contasPagar", fluxoCaixa.contasPagar)
		//dados.put("fluxo_caixa_data_inicialt", fluxoCaixa.dataInicial)
		//dados.put("fluxo_caixa_data_final", fluxoCaixa.dataFinal)
		
		dados.put("data_inicial", dataInicial)
		dados.put("data_final", dataFinal)
		dados.put("saldo_Inicial", fluxoCaixa.saldoInicial.toString())
		List reportData = new ArrayList()
		reportData.add(dados)

		log.debug("reportData: "+reportData)

		def reportDef = new JasperReportDef(name:reportFileName, fileFormat:JasperExportFormat.PDF_FORMAT, reportData: reportData )
		def reportPdf = jasperService.generateReport(reportDef)
		def report2Db = new ByteArrayInputStream(reportPdf.toByteArray())
		
		//println("reportDef: "+reportDef)
		//println("reportPdf: "+reportPdf)
		//println("report2Db: "+report2Db)

		//fluxoCaixa.tamanhoArquivo = reportPdf.size()
		//fluxoCaixa.tipoConteudo = 'pdf'

		println("MovimentosService - criaFluxoCaixa - fluxoCaixa_service: "+fluxoCaixa)		
		
		return fluxoCaixa
	}
	
	public def contasPagarTela(){
		Date data = new Date()
		
		def sql = new Sql(dataSource)
		
		def QuerycontasPagar ="select contas_pagar.id, gastos.descricao, contas_pagar.data_vencimento, " 
		QuerycontasPagar += "contas_pagar.valor from contas_pagar left join gastos on " 
		QuerycontasPagar+="(gastos.id=contas_pagar.gasto_id) where contas_pagar.baixada=0 order by contas_pagar.data_vencimento limit 8"
		
		def contasPagarList = sql.rows(QuerycontasPagar)
		
		println ("CONTAS LIST"+contasPagarList)
		
		return contasPagarList
	}
	
	public def contasReceberTela(){
		Date data = new Date()
		
		def sql = new Sql(dataSource)
		
		def QuerycontasReceber ="select contas_receber.id, venda.descricao, contas_receber.data_vencimento, "
		QuerycontasReceber += "contas_receber.valor from contas_receber left join venda on "
		QuerycontasReceber+="(venda.id=contas_receber.venda_id) where contas_receber.baixada=0 order by contas_receber.data_vencimento limit 8"
		
		def contasReceberList = sql.rows(QuerycontasReceber)
		
		println ("CONTAS LIST"+contasReceberList)
		
		return contasReceberList
	}
}
